<template>
    <div>
        <el-dialog v-model="props.visible" title="选择补版内容" width="80%" @close="handleCancel">
            <el-form :model="queryParams" class="flex-box" ref="queryRef" :inline="true">
                <div>
                    <el-form-item label="生产单编码" prop="produceNo">
                        <el-input
                            v-model.trim="queryParams.produceNo"
                            placeholder="请输入生产单编码"
                            @keyup.enter="handleQuery"
                        />
                    </el-form-item>
                    <el-form-item>
                        <el-button type="primary" icon="Search" @click="handleQuery">
                            搜索
                        </el-button>
                        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
                    </el-form-item>
                </div>
                <el-button type="primary" plain @click="handleSubmit" :disabled="multiple">
                    确认
                    <!-- @click="handleSubmit" -->
                </el-button>
            </el-form>

            <el-row :gutter="20" style="overflow: auto">
                <el-col :span="8">
                    <el-table 
                        v-loading="loading"
                        :data="orderList"
                        stripe
                        border
                        style="cursor: pointer"
                        @row-click="handleClick"
                        row-key="produceId"
                        ref="orderListTable"
                        highlight-current-row
                    >

                        <el-table-column
                            label="生产单编码"
                            align="center"
                            :show-overflow-tooltip="true"
                            prop="produceNo"
                        ></el-table-column>
                        <el-table-column
                            label="出版编码"
                            align="center"
                            :show-overflow-tooltip="true"
                            prop="pubNo"
                        ></el-table-column>
                        <el-table-column
                            label="类型"
                            align="center"
                            :show-overflow-tooltip="true"
                            prop="type"
                        >
                            <template v-slot="{ row }">
                                <el-tag :type="row.type == 1 ? 'success' : ''" effect="dark">
                                    {{ row.type == 1 ? '封面' : '内文' }}
                                </el-tag>
                            </template>
                        </el-table-column>
                    </el-table>
                </el-col>
                <el-col :span="16">
                    <el-table
                        ref="orderRef"
                        v-loading="loadingInfo"
                        :data="printList"
                        row-key="paperid"
                        @selection-change="handleSelectionChange"
                        stripe
                        border
                        style="cursor: pointer"
                    >

                    <el-table-column type="selection"
                         :reserve-selection="true"                         
                         width="55" />

                        <el-table-column label="序号" width="55" type="index" align="center" />

                        <el-table-column
                            label="印刷序列号"
                            min-width="120"
                            prop="printProduceNo"
                            align="center"
                        ></el-table-column>
                        <el-table-column label="品种" prop="breed" min-width="160" align="center">
                            <!-- <template #default="scope">
                              <dict-tag
                                  :options="ems_order_breed_type"
                                  :value="scope.row.breed"
                              />
                          </template> -->
                        </el-table-column>
                        <el-table-column
                            label="组成"
                            min-width="160"
                            prop="composition"
                            align="center"
                        >
                            <!-- <template #default="scope">
                              <dict-tag
                                  :options="ems_order_make_up"
                                  :value="scope.row.composition"
                              />
                          </template> -->
                        </el-table-column>
                        <el-table-column
                            label="印数"
                            width="120"
                            prop="printAmount"
                            align="center"
                        ></el-table-column>
                        <el-table-column label="印色" width="120" prop="printColour" align="center">
                            <template #default="scope">
                                <dict-tag
                                    :options="ems_order_print_color"
                                    :value="scope.row.printColour"
                                />
                            </template>
                        </el-table-column>
                        <el-table-column
                            label="版材数量"
                            width="120"
                            prop="sheetAmount"
                            align="center"
                        ></el-table-column>
                        <el-table-column
                            label="版材尺寸"
                            prop="sheetSize"
                            width="120"
                            align="center"
                        >
                            <template #default="scope">
                                <dict-tag
                                    :options="ems_machine_info_size"
                                    :value="scope.row.sheetSize"
                                />
                            </template>
                        </el-table-column>
                        <el-table-column
                            label="做版人"
                            width="120"
                            prop="makeBy"
                            align="center"
                        ></el-table-column>
                    </el-table>
                </el-col>
            </el-row>
            <div class="footer">
                <pagination
                    v-show="total > 0"
                    :total="total"
                    v-model:page="queryParams.pageNum"
                    v-model:limit="queryParams.pageSize"
                    @pagination="getList"
                />
            </div>
        </el-dialog>
    </div>
</template>

<script setup>
import { getProduceOrderList, getProduceById } from '@/api/production/cover'
import { searchProduceList } from '@/api/production/supplementary.js'

const emit = defineEmits(['changeUpdate', 'cancel'])
const { proxy } = getCurrentInstance()
const { ems_machine_info_size, ems_order_make_up, ems_order_print_color, ems_order_breed_type } =
    proxy.useDict(
        'ems_order_breed_type',
        'ems_machine_info_size',
        'ems_order_make_up',
        'ems_order_print_color'
    )

    const printColorToLable = (row) => {
  const resp = ems_order_print_color.value.filter((item) => item.value == row);
  return eval(resp[0].label);
};
const props = defineProps({
    visible: {
        type: Boolean,
        default: false,
    },
    orderSelectList: {
        type: Array,
        default: () => {
            ;[]
        },
    },
    machineId: {
        type: String,
        default: '',
    },
})
const selectList = ref([])
const orderRef = ref(null)
const orderList = ref([])
const printList = ref([])
const multiple = ref(true)
const selectRow = ref([])
const loading = ref(false)
const loadingInfo = ref(false)
const orderListTable = ref(null)
const queryParams = ref({
    pageNum: 1,
    pageSize: 10,
})
watch(
    () => props.visible,
    val => {
        if (val) {
            handleQuery()
            nextTick(() => {
                orderListTable.value.clearSelection()
                if (props.orderSelectList.length > 0) {
                    props.orderSelectList.forEach(item => {
                        orderListTable.value.toggleRowSelection(item, true)
                    })
                }
            })
        }
    }
)
const total = ref(0)

// 选中订单
const handleClick = row => {
    loadingInfo.value = true
    getProduceById({ pid: row.produceId }).then(res => {
        res.data.producePrintList.forEach(item => {
            item.sheetAmount =
        (item.printColour ? printColorToLable(item.printColour) : 0) *
        Math.ceil(Number(item.sheet || 0));
            item.produceNo = res.data.produceNo
            item.producePrintId = item.printId
            item.createTime = undefined
            res.data.produceProductList.forEach(ele => {
                if (item.orderProductId == ele.orderProductId) {
                    item.breed = ele.breedType
                    item.bookName = ele.bookName
                    item.orderNo = ele.orderNo
                    item.kaoban = ele.kaoban
                }
            })
        })
        printList.value = res.data.producePrintList
        loadingInfo.value = false
    })
}




// 选中
const handleSelectionChange = row => {
    selectRow.value = row
    multiple.value = !row.length
}



// const handleSubmit = () => {
//     selectRow.value.forEach(each => {
//         let list = []
//         getProduceById({ pid: each.produceId }).then(res => {
//             res.data.producePrintList.forEach(item => {
//                 item.produceNo = res.data.produceNo
//                 item.producePrintId = item.printId
//                 item.createTime = undefined
//                 res.data.produceProductList.forEach(ele => {
//                     if (item.orderProductId == ele.orderProductId) {
//                         item.breed = ele.breedType
//                         item.bookName = ele.bookName
//                         item.orderNo = ele.orderNo
//                     }
//                 })
//             })
//             let array1 = res.data.producePrintList.filter(item => item.makeStatus == 2)
//             list = [...list, ...array1]
//             loadingInfo.value = false
//         })
//     })
//     emit('changeUpdate', list)
// }


const handleSubmit = async () => {
    const resultList = []

    console.log(selectRow.value)
    // 使用 Promise.all() 等待所有请求完成后再进行下一步操作
    await Promise.all(

        selectRow.value.map(async each => {
            const res = 
            selectRow.value
            // await getProduceById({ pid: each.produceId })
            console.log(res.value)
            // 
            const list = []
            // res.data.
            // selectRow.value.
            // producePrintList.forEach(item => {
            //     item.produceNo = res.data.produceNo
            //     item.producePrintId = item.printId
            //     item.createTime = undefined
            //     res.data.produceProductList.forEach(ele => {
            //         if (item.orderProductId == ele.orderProductId) {
            //             item.breed = ele.breedType
            //             item.bookName = ele.bookName
            //             item.orderNo = ele.orderNo
            //         }
            //     })
            // })
            // 将满足条件的项加入 list 中
            const array1 = selectRow.value
            // res.data.producePrintList
            list.push(...array1)
            // 将 list 加入到 resultList 中
            resultList.push(...list)
        })
    )
    // 关闭 loading
    loadingInfo.value = false
    // 触发 changeUpdate 事件，并传递 resultList
    emit('changeUpdate', resultList)
}





const handleCancel = () => {
    printList.value =[]
    proxy.resetForm('queryRef')
    emit('cancel')
}

const getList = async () => {
    loading.value = true
    if (props.machineId) {
        queryParams.value.machineId = props.machineId
    }
    const res = await searchProduceList(queryParams.value)
    if (res.rows.length > 0) {
        orderListTable.value.setCurrentRow(res.rows[0])
    }
    loading.value = false
    orderList.value = res.rows
    // orderList.value.length > 0 && handleClick(orderList.value[0])
    if (orderList.value.length > 0) {
      handleClick(orderList.value[0]);
    } else {
      printList.value = [];
    }
    total.value = res.total
}



// 搜索
const handleQuery = () => {
    queryParams.value.pageNum = 1
    getList()
}
/** 重置按钮操作 */
const resetQuery = () => {
    proxy.resetForm('queryRef')
    handleQuery()
}

// getList()
</script>

<style lang="scss" scoped></style>
